package com.mohe.dangjian.service.impl;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang.StringUtils;

import com.mohe.dangjian.dao.IDao;
import com.mohe.dangjian.model.LXParty;
import com.mohe.dangjian.service.interfaces.ILXParty;
import com.mohe.dangjian.utils.Page;

public class LXPartyImpl implements ILXParty {

	private IDao<LXParty> lxPartyDao;

	public IDao<LXParty> getLxPartyDao() {
		return lxPartyDao;
	}

	public void setLxPartyDao(IDao<LXParty> lxPartyDao) {
		this.lxPartyDao = lxPartyDao;
	}

	@Override
	public List<LXParty> getLXPartyList(LXParty lxParty, Page page) {
		StringBuffer where = new StringBuffer();
		where.append("from LXParty where 1=1");
		List<Object> params = new ArrayList<Object>();
		// 党组织名称
		if (!StringUtils.isBlank(lxParty.getName())) {
			where.append(" and name like ?");
			params.add("%%" + lxParty.getName() + "%%");
		}
		// 地址
		if (!StringUtils.isBlank(lxParty.getAddress())) {
			where.append(" and address like ?");
			params.add("%%" + lxParty.getAddress() + "%%");
		}
		// 单位性质
		if (!StringUtils.isBlank(lxParty.getType())) {
			where.append(" and type like ?");
			params.add("%%" + lxParty.getType() + "%%");
		}
		// 单位员工数
		if (lxParty.getWorkerNum() != null) {
			where.append(" and workerNum = ?");
			params.add(lxParty.getWorkerNum());
		}
		// 单位负责人姓名
		if (!StringUtils.isBlank(lxParty.getLeaderName())) {
			where.append(" and leaderName like ?");
			params.add("%%" + lxParty.getLeaderName() + "%%");
		}
		// 负责人党内职务
		if (!StringUtils.isBlank(lxParty.getLeaderTitle())) {
			where.append(" and leaderTitle like ?");
			params.add("%%" + lxParty.getLeaderTitle() + "%%");
		}
		// 负责人电话
		if (!StringUtils.isBlank(lxParty.getLeaderTel())) {
			where.append(" and leaderTel like ?");
			params.add("%%" + lxParty.getLeaderTel() + "%%");
		}
		// 联系人
		if (!StringUtils.isBlank(lxParty.getContacts())) {
			where.append(" and contacts like ?");
			params.add("%%" + lxParty.getContacts() + "%%");
		}
		// 联系人电话
		if (!StringUtils.isBlank(lxParty.getContactsTel())) {
			where.append(" and contactsTel like ?");
			params.add("%%" + lxParty.getContactsTel() + "%%");
		}
		// 传真
		if (!StringUtils.isBlank(lxParty.getFax())) {
			where.append(" and fax like ?");
			params.add("%%" + lxParty.getFax() + "%%");
		}
		// 邮编
		if (!StringUtils.isBlank(lxParty.getZip())) {
			where.append(" and zip like ?");
			params.add("%%" + lxParty.getZip() + "%%");
		}

		where.append(" order by createDate desc");
		List<LXParty> list = lxPartyDao.query(where.toString(),
				(page.getCurrPage() - 1) * page.getPageSize(),
				page.getPageSize(), params);
		if (list != null && list.size() > 0) {
			return list;
		}
		return null;
	}

	@Override
	public Integer getCount(LXParty lxParty) {
		StringBuffer where = new StringBuffer();
		where.append("from LXParty where 1=1");
		List<Object> params = new ArrayList<Object>();
		// 党组织名称
		if (!StringUtils.isBlank(lxParty.getName())) {
			where.append(" and name like ?");
			params.add("%%" + lxParty.getName() + "%%");
		}
		// 地址
		if (!StringUtils.isBlank(lxParty.getAddress())) {
			where.append(" and address like ?");
			params.add("%%" + lxParty.getAddress() + "%%");
		}
		// 单位性质
		if (!StringUtils.isBlank(lxParty.getType())) {
			where.append(" and type like ?");
			params.add("%%" + lxParty.getType() + "%%");
		}
		// 单位员工数
		if (lxParty.getWorkerNum() != null) {
			where.append(" and workerNum = ?");
			params.add(lxParty.getWorkerNum());
		}
		// 单位负责人姓名
		if (!StringUtils.isBlank(lxParty.getLeaderName())) {
			where.append(" and leaderName like ?");
			params.add("%%" + lxParty.getLeaderName() + "%%");
		}
		// 负责人党内职务
		if (!StringUtils.isBlank(lxParty.getLeaderTitle())) {
			where.append(" and leaderTitle like ?");
			params.add("%%" + lxParty.getLeaderTitle() + "%%");
		}
		// 负责人电话
		if (!StringUtils.isBlank(lxParty.getLeaderTel())) {
			where.append(" and leaderTel like ?");
			params.add("%%" + lxParty.getLeaderTel() + "%%");
		}
		// 联系人
		if (!StringUtils.isBlank(lxParty.getContacts())) {
			where.append(" and contacts like ?");
			params.add("%%" + lxParty.getContacts() + "%%");
		}
		// 联系人电话
		if (!StringUtils.isBlank(lxParty.getContactsTel())) {
			where.append(" and contactsTel like ?");
			params.add("%%" + lxParty.getContactsTel() + "%%");
		}
		// 传真
		if (!StringUtils.isBlank(lxParty.getFax())) {
			where.append(" and fax like ?");
			params.add("%%" + lxParty.getFax() + "%%");
		}
		// 邮编
		if (!StringUtils.isBlank(lxParty.getZip())) {
			where.append(" and zip like ?");
			params.add("%%" + lxParty.getZip() + "%%");
		}
		
		return lxPartyDao.getCount(where.toString(), params);
	}

	@Override
	public boolean saveLXParty(LXParty lxParty) {
		return lxPartyDao.insert(lxParty);
	}

	@Override
	public boolean saveLXPartyList(List<LXParty> lxPartyList) {
		return lxPartyDao.insert(lxPartyList);
	}

	@Override
	public LXParty getLXPartyById(Long timeKey) {
		LXParty lxParty = lxPartyDao.getByKey(timeKey);
		if (lxParty != null) {
			return lxParty;
		}
		return null;
	}

	@Override
	public boolean updateLXParty(LXParty lxParty) {
		return lxPartyDao.update(lxParty);
	}

	@Override
	public boolean delLXParty(Long timeKey) {
		return lxPartyDao.delete(timeKey);
	}

	@Override
	public List<LXParty> getAllLXParty() {
		StringBuffer where = new StringBuffer();
		where.append("where timeKey > -1 order by createDate desc");
		return lxPartyDao.query(where.toString(), null);
	}

	@Override
	public List<LXParty> getLXPartyList(LXParty lxParty) {
		StringBuffer where = new StringBuffer();
		where.append("from LXParty where 1=1");
		List<Object> params = new ArrayList<Object>();
		// 党组织名称
		if (!StringUtils.isBlank(lxParty.getName())) {
			where.append(" and name like ?");
			params.add("%%" + lxParty.getName() + "%%");
		}
		// 地址
		if (!StringUtils.isBlank(lxParty.getAddress())) {
			where.append(" and address like ?");
			params.add("%%" + lxParty.getAddress() + "%%");
		}
		// 单位性质
		if (!StringUtils.isBlank(lxParty.getType())) {
			where.append(" and type like ?");
			params.add("%%" + lxParty.getType() + "%%");
		}
		// 单位员工数
		if (lxParty.getWorkerNum() != null) {
			where.append(" and workerNum = ?");
			params.add(lxParty.getWorkerNum());
		}
		// 单位负责人姓名
		if (!StringUtils.isBlank(lxParty.getLeaderName())) {
			where.append(" and leaderName like ?");
			params.add("%%" + lxParty.getLeaderName() + "%%");
		}
		// 负责人党内职务
		if (!StringUtils.isBlank(lxParty.getLeaderTitle())) {
			where.append(" and leaderTitle like ?");
			params.add("%%" + lxParty.getLeaderTitle() + "%%");
		}
		// 负责人电话
		if (!StringUtils.isBlank(lxParty.getLeaderTel())) {
			where.append(" and leaderTel like ?");
			params.add("%%" + lxParty.getLeaderTel() + "%%");
		}
		// 联系人
		if (!StringUtils.isBlank(lxParty.getContacts())) {
			where.append(" and contacts like ?");
			params.add("%%" + lxParty.getContacts() + "%%");
		}
		// 联系人电话
		if (!StringUtils.isBlank(lxParty.getContactsTel())) {
			where.append(" and contactsTel like ?");
			params.add("%%" + lxParty.getContactsTel() + "%%");
		}
		// 传真
		if (!StringUtils.isBlank(lxParty.getFax())) {
			where.append(" and fax like ?");
			params.add("%%" + lxParty.getFax() + "%%");
		}
		// 邮编
		if (!StringUtils.isBlank(lxParty.getZip())) {
			where.append(" and zip like ?");
			params.add("%%" + lxParty.getZip() + "%%");
		}

		where.append(" order by createDate desc");
		List<LXParty> list = lxPartyDao.query(where.toString(), params);
		if (list != null && list.size() > 0) {
			return list;
		}
		return null;
	}
}
